/*
    Method to start visiting
     */
    private void doInit() {
      if (myChild1 == null || myChild2 == null) return;
      PsiElement psi1 = myChild1.getPsi();
      PsiElement psi2 = myChild2.getPsi();
      if (psi1 == null || psi2 == null) return;
      if (psi1.getLanguage() != MoonFileType.MOON_LANGUAGE
          || psi2.getLanguage() != MoonFileType.MOON_LANGUAGE) {
        return;
      }

      if (myChild2 != null
          && mySettings.KEEP_FIRST_COLUMN_COMMENT
          && SpacingUtil.COMMENT_BIT_SET.contains(myChild2.getElementType())) {

        myResult = Spacing.createKeepingFirstColumnSpacing(0, Integer.MAX_VALUE, true, 1);

        return;
      }

      if (myChild1 != null && myChild2 != null && myChild1.getElementType() == NEWLINE) {
        final ASTNode prev = SpacingUtil.getPrevElementType(myChild1);
        if (prev != null && prev.getElementType() == SHORTCOMMENT) {
          myResult =
              Spacing.createSpacing(
                  0, 0, 1, mySettings.KEEP_LINE_BREAKS, mySettings.KEEP_BLANK_LINES_IN_CODE);
          return;
        }
      }

      if (myParent instanceof MoonPsiElement) {
        ((MoonPsiElement) myParent).accept(this);
      }
    }
 private void init(final ASTNode child) {
   if (child == null) return;
   ASTNode treePrev = child.getTreePrev();
   while (treePrev != null && SpacingUtil.isWhiteSpace(treePrev)) {
     treePrev = treePrev.getTreePrev();
   }
   if (treePrev == null) {
     init(child.getTreeParent());
   } else {
     myChild2 = child;
     myChild1 = treePrev;
     final CompositeElement parent = (CompositeElement) treePrev.getTreeParent();
     myParent = SourceTreeToPsiMap.treeElementToPsi(parent);
   }
 }