public boolean removeVariable(String name, boolean force) throws ConfigurationException {
    if (!force) {
      Set<String> statements = statementVariableRef.getStatementNamesForVar(name);
      if ((statements != null) && (!statements.isEmpty())) {
        throw new ConfigurationException(
            "Variable '" + name + "' is in use by one or more statements");
      }
    }

    VariableReader reader = variableService.getReader(name);
    if (reader == null) {
      return false;
    }

    variableService.removeVariable(name);
    statementVariableRef.removeReferencesVariable(name);
    statementVariableRef.removeConfiguredVariable(name);
    return true;
  }