TextRange (GrTypeDefinition clazz) { final GrModifierList modifierList = clazz.getModifierList(); final int startOffset = modifierList != null ? modifierList.getTextOffset() : clazz.getTextOffset(); final GrImplementsClause implementsClause = clazz.getImplementsClause(); final int endOffset; if (implementsClause != null) { endOffset = implementsClause.getTextRange().getEndOffset(); } else { final GrExtendsClause extendsClause = clazz.getExtendsClause(); if (extendsClause != null) { endOffset = extendsClause.getTextRange().getEndOffset(); } else { endOffset = clazz.getNameIdentifierGroovy().getTextRange().getEndOffset(); } } return new TextRange(startOffset, endOffset); }