@Override
 public IRefactoringRpcMessage run(IErlSelection selection) {
   IErlMemberSelection sel = (IErlMemberSelection) selection;
   return WranglerBackendManager.getRefactoringBackend()
       .call(
           "fold_expr_1_eclipse",
           "sxxxi",
           sel.getFilePath(),
           syntaxTree,
           getSelectedPos(),
           sel.getSearchPath(),
           GlobalParameters.getTabWidth());
 }
 @Override
 public IRefactoringRpcMessage runAlternative(final IErlSelection selection) {
   IErlMemberSelection sel = (IErlMemberSelection) selection;
   return WranglerBackendManager.getRefactoringBackend()
       .call(
           "new_let_1_eclipse",
           "ssxxxi",
           sel.getFilePath(),
           userInput,
           expr,
           parentExpr,
           sel.getSearchPath(),
           GlobalParameters.getTabWidth());
 }
 @Override
 public IRefactoringRpcMessage run(final IErlSelection selection) {
   IErlMemberSelection sel = (IErlMemberSelection) selection;
   return WranglerBackendManager.getRefactoringBackend()
       .call(
           "new_let_eclipse",
           "sxxsxi",
           sel.getFilePath(),
           sel.getSelectionRange().getStartPos(),
           sel.getSelectionRange().getEndPos(),
           userInput,
           sel.getSearchPath(),
           GlobalParameters.getTabWidth());
 }
  @Override
  public RefactoringStatus checkInitialConditions(IProgressMonitor pm)
      throws CoreException, OperationCanceledException {
    if (functionClause == null) {
      return RefactoringStatus.createFatalErrorStatus("No function clause was given!");
    } else {

      ExpressionPosRpcMessage m = new ExpressionPosRpcMessage();
      String path = selection.getFilePath();
      String moduleName = functionClause.getModule().getModuleName();
      String functionName = functionClause.getFunctionName();
      int arity = functionClause.getArity();

      int clauseIndex = 1;
      if (!(functionClause instanceof IErlFunction))
        // FIXME: avoid hacking!!!
        clauseIndex = Integer.valueOf(functionClause.getName().substring(1));

      m =
          (ExpressionPosRpcMessage)
              WranglerBackendManager.getRefactoringBackend()
                  .callWithParser(
                      m,
                      "fold_expr_by_name_eclipse",
                      "sssiixi",
                      path,
                      moduleName,
                      functionName,
                      arity,
                      clauseIndex,
                      selection.getSearchPath(),
                      GlobalParameters.getTabWidth());

      if (m.isSuccessful()) {
        syntaxTree = m.getSyntaxTree();
        // TODO: store positions, selectedpositions
        positions = m.getPositionDefinitions(selection.getDocument());
        selectedPositions = new ArrayList<IErlRange>();
      } else {
        return RefactoringStatus.createFatalErrorStatus(m.getMessageString());
      }
    }

    return new RefactoringStatus();
  }