function removeRestrictedInterface(json) {
  const restrictedInterfaces = _(json.symbols)
    .filter(
      symbol =>
        symbol.kind === "interface" && symbol.visibility === "restricted"
    )
    .map(symbol => symbol.name)
    .value();
  _.forEach(json.symbols, symbol => {
    if (symbol.kind === "class" && !_.isEmpty(symbol.implements)) {
      _.remove(
        symbol.implements,
        implementName => restrictedInterfaces.indexOf(implementName) != -1
      );
    }
  });
}
/**
 * In case a interface is tagged as restricted, we should remove it from the classes that uses it
 * @param json
 */
In case a interface is tagged as restricted, we should remove it from the classes that uses it
@param json
In case a interface is tagged as restricted we should remove it from the classes that uses it @param json
function removeRestrictedInterface(json) {
  const restrictedInterfaces = _(json.symbols)
    .filter(
      symbol =>
        symbol.kind === "interface" && symbol.visibility === "restricted"
    )
    .map(symbol => symbol.name)
    .value();
  _.forEach(json.symbols, symbol => {
    if (symbol.kind === "class" && !_.isEmpty(symbol.implements)) {
      _.remove(
        symbol.implements,
        implementName => restrictedInterfaces.indexOf(implementName) != -1
      );
    }
  });
}
function removeRestrictedInterface ( json ) { const restrictedInterfaces = _ ( json . symbols ) . filter ( symbol => symbol . kind === "interface" && symbol . visibility === "restricted" ) . map ( symbol => symbol . name ) . value ( ) ; _ . forEach ( json . symbols , symbol => { if ( symbol . kind === "class" && ! _ . isEmpty ( symbol . implements ) ) { _ . remove ( symbol . implements , implementName => restrictedInterfaces . indexOf ( implementName ) != - 1 ) ; } } ) ; }
In case a interface is tagged as restricted, we should remove it from the classes that uses it
 @param json
In case a interface is tagged as restricted we should remove it from the classes that uses it @param json