private Operator<?>[] getSelfContainedOperators() {
    final List<Operator<?>> result = new ArrayList<>();

    for (Class<?> c : ClassUtils.hierarchy(getClass(), interfacesPolicy)) {
      for (Class<?> inner : c.getDeclaredClasses()) {
        if (Operator.class.isAssignableFrom(inner)) {
          final Operator<?> operator = newInstance(inner.asSubclass(Operator.class));
          if (operator != null) {
            result.add(operator);
          }
        }
      }
    }
    return result.toArray(new Operator[result.size()]);
  }
  protected Class func_180212_a(Class p_180212_1_, boolean p_180212_2_) {
    Iterator var3 = ClassUtils.hierarchy(p_180212_1_, Interfaces.INCLUDE).iterator();
    Class var4;

    do {
      if (!var3.hasNext()) {
        throw new IllegalArgumentException("Don\'t know how to search for " + p_180212_1_);
      }

      var4 = (Class) var3.next();
    } while (!this.field_180216_b.contains(var4));

    if (var4 == this.field_180217_c && p_180212_2_) {
      this.func_180213_a(p_180212_1_);
    }

    return var4;
  }