public void testAnonymousClassInheritsLocalClassInStaticMethod() {
    resolveSource(
        "Test", "class Test { static void test() { class LocalClass {}; new LocalClass() {}; } }");

    AnonymousClassDeclaration decl =
        (AnonymousClassDeclaration) nodesByType.get(ASTNode.ANONYMOUS_CLASS_DECLARATION).get(0);
    ITypeBinding type = decl.resolveBinding();
    assertFalse(OuterReferenceResolver.needsOuterParam(type));
  }
  private void addOuterArg(
      ClassInstanceCreation node, GeneratedMethodBinding binding, ITypeBinding declaringClass) {
    ITypeBinding type = node.getTypeBinding().getTypeDeclaration();
    if (!OuterReferenceResolver.needsOuterParam(type)) {
      return;
    }

    Expression outerExpr = node.getExpression();
    List<IVariableBinding> path = OuterReferenceResolver.getPath(node);
    Expression outerArg = null;

    if (outerExpr != null) {
      node.setExpression(null);
      outerArg = outerExpr;
    } else if (path != null) {
      outerArg = Name.newName(fixPath(path));
    } else {
      outerArg = new ThisExpression(declaringClass);
    }

    node.getArguments().add(0, outerArg);
    binding.addParameter(0, declaringClass);
  }