@@ -0,0 +1,1775 @@
+// Copyright 2020 Google LLC%0A//%0A// Licensed under the Apache License, Version 2.0 (the %22License%22);%0A// you may not use this file except in compliance with the License.%0A// You may obtain a copy of the License at%0A//%0A//      http://www.apache.org/licenses/LICENSE-2.0%0A//%0A// Unless required by applicable law or agreed to in writing, software%0A// distributed under the License is distributed on an %22AS IS%22 BASIS,%0A// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A// See the License for the specific language governing permissions and%0A// limitations under the License.%0A%0Apackage com.google.api.generator.engine.ast;%0A%0Apublic class ScopeNode implements AstNode %7B%0A  private enum ScopeKind %7B%0A    LOCAL, // Placeholder for local scopes.%0A    PRIVATE,%0A    PROTECTED,%0A    PUBLIC;%0A  %7D%0A%0A  private final ScopeKind scopeKind;%0A%0A  private ScopeNode(ScopeKind scopeKind) %7B%0A    this.scopeKind = scopeKind;%0A  %7D%0A%0A  public static final ScopeNode PRIVATE = new ScopeNode(ScopeKind.PRIVATE);%0A  public static final ScopeNode PROTECTED = new ScopeNode(ScopeKind.PROTECTED);%0A  public static final ScopeNode PUBLIC = new ScopeNode(ScopeKind.PUBLIC);%0A  public static final ScopeNode LOCAL = new ScopeNode(ScopeKind.LOCAL);%0A%0A  @Override%0A  public String toString() %7B%0A    switch (scopeKind) %7B%0A      case PRIVATE:%0A        return %22private%22;%0A      case PROTECTED:%0A        return %22protected%22;%0A      case PUBLIC:%0A        return %22public%22;%0A      case LOCAL:%0A      default:%0A        return %22%22;%0A    %7D%0A  %7D%0A%0A  @Override%0A  public void accept(AstNodeVisitor visitor) %7B%0A    visitor.visit(this);%0A  %7D%0A%0A  @Override%0A  public boolean equals(Object o) %7B%0A    if (!(o instanceof ScopeNode)) %7B%0A      return false;%0A    %7D%0A%0A    ScopeNode scope = (ScopeNode) o;%0A    return scopeKind.equals(scope.scopeKind);%0A  %7D%0A%7D%0A

add ScopeNode modifiers