@Override
  public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon) {
    PsiElement psi = chameleon.getPsi();
    if (psi == null) {
      throw new AssertionError("Bad chameleon: " + chameleon +
                               " of type " + chameleon.getElementType() +
                               " in #" + chameleon.getElementType().getLanguage());
    }
    return doParseContents(chameleon, psi);
  }
@Override
  public @Nullable ASTNode parseContents(final @NotNull ASTNode chameleon)