/*
 * Copyright 2000-2007 JetBrains s.r.o.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef;

import com.intellij.navigation.NavigationItem;
import com.intellij.psi.*;
import com.jetbrains.python.psi.stubs.PyClassStub;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrTopLevelDefintion;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrClassInitializer;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMembersDeclaration;
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.GrTopStatement;
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrWildcardTypeArgument;
import org.jetbrains.plugins.groovy.lang.psi.stubs.GrTypeDefinitionStub;

/**
 * @autor: Dmitry.Krasilschikov
 * @date: 18.03.2007
 */
public interface GrTypeDefinition extends GrTopStatement, NavigatablePsiElement, PsiClass, GrTopLevelDefintion, GrMemberOwner, StubBasedPsiElement<GrTypeDefinitionStub> {
  String DEFAULT_BASE_CLASS_NAME = "groovy.lang.GroovyObjectSupport";

  public GrTypeDefinition[] EMPTY_ARRAY = new GrTypeDefinition[0];

  public GrTypeDefinitionBody getBody();

  @NotNull
  GrField[] getFields();

  @NotNull
  GrClassInitializer[] getInitializersGroovy();

  @NotNull
  public GrMembersDeclaration[] getMemberDeclarations();

  @Nullable
  public String getQualifiedName();

  GrWildcardTypeArgument[] getTypeParametersGroovy();

  @Nullable
  GrExtendsClause getExtendsClause();

  @Nullable
  GrImplementsClause getImplementsClause();

  String[] getSuperClassNames();

  @NotNull
  GrMethod[] getGroovyMethods();

  @NotNull
  PsiMethod[] findCodeMethodsByName(@NonNls String name, boolean checkBases);

  @NotNull
  PsiMethod[] findCodeMethodsBySignature(PsiMethod patternMethod, boolean checkBases);

  @Nullable
  PsiElement getLBraceGroovy();

  @Nullable
  PsiElement getRBraceGroovy();
}

@@ -687,111 +687,13 @@
 lij.
-navigation.NavigationItem;%0Aimport com.intellij.psi.*;%0Aimport com.jetbrains.python.psi.stubs.PyClassStub
+psi.*
 ;%0Aim
@@ -725,21 +725,20 @@
 tions.No
-tNull
+nNls
 ;%0Aimport
@@ -765,23 +765,22 @@
 ations.N
+otN
 ull
-able
 ;%0Aimport
@@ -799,37 +799,39 @@
 ns.annotations.N
-onNls
+ullable
 ;%0Aimport org.jet
@@ -878,21 +878,32 @@
 ments.Gr
-Field
+ClassInitializer
 ;%0Aimport
@@ -960,31 +960,14 @@
 nts.
-typedef.members.GrMetho
+GrFiel
 d;%0Ai
@@ -1106,34 +1106,52 @@
 tements.
-GrClassInitializer
+typedef.members.GrMembersDeclaration
 ;%0Aimport
@@ -1224,32 +1224,20 @@
 ers.GrMe
-mbersDeclaration
+thod
 ;%0Aimport

fix compilation