Program: 15146
Project: 15146
Buggy source:
public Cluster(final ClusterConfiguration configuration){
  super();
  this.configuration=configuration;
  this.fullName=configuration.getFullName();
  this.state=new ClusterState(configuration.getName());
  this.nodeState=new ClusterNodeState(configuration.getName());
  this.nodeMap=new ConcurrentSkipListMap<String,NodeInfo>();
  this.stateMachine=new StateMachineBuilder<Cluster,State,Transition>(this,State.PENDING){
{
      final TransitionAction<Cluster> noop=Transitions.noop();
      this.in(Cluster.State.DISABLED).run(Cluster.ServiceStateDispatch.DISABLED);
      this.from(State.BROKEN).to(State.PENDING).error(State.BROKEN).on(Transition.RESTART_BROKEN).run(noop);
      this.from(State.STOPPED).to(State.PENDING).error(State.PENDING).on(Transition.PRESTART).run(noop);
      this.from(State.PENDING).to(State.AUTHENTICATING).error(State.PENDING).on(Transition.AUTHENTICATE).run(LogRefresh.CERTS);
      this.from(State.AUTHENTICATING).to(State.STARTING).error(State.PENDING).on(Transition.START).run(noop);
      this.from(State.STARTING).to(State.STARTING_NOTREADY).error(State.PENDING).on(Transition.START_CHECK).run(Refresh.SERVICEREADY);
      this.from(State.STARTING_NOTREADY).to(State.NOTREADY).error(State.PENDING).on(Transition.STARTING_SERVICES).run(Refresh.SERVICEREADY);
      this.from(State.NOTREADY).to(State.DISABLED).error(State.NOTREADY).on(Transition.NOTREADYCHECK).run(Refresh.SERVICEREADY);
      this.from(State.DISABLED).to(State.DISABLED).error(State.NOTREADY).on(Transition.DISABLEDCHECK).run(Refresh.SERVICEREADY);
      this.from(State.DISABLED).to(State.ENABLING).error(State.DISABLED).on(Transition.ENABLE).run(Cluster.ServiceStateDispatch.ENABLED);
      this.from(State.DISABLED).to(State.STOPPED).error(State.PENDING).on(Transition.STOP).run(noop);
      this.from(State.ENABLED).to(State.DISABLED).error(State.NOTREADY).on(Transition.DISABLE).run(Cluster.ServiceStateDispatch.DISABLED);
      this.from(State.ENABLING).to(State.ENABLING_RESOURCES).error(State.NOTREADY).on(Transition.ENABLING_RESOURCES).run(Refresh.RESOURCES);
      this.from(State.ENABLING_RESOURCES).to(State.ENABLING_NET).error(State.NOTREADY).on(Transition.ENABLING_NET).run(Refresh.NETWORKS);
      this.from(State.ENABLING_NET).to(State.ENABLING_VMS).error(State.NOTREADY).on(Transition.ENABLING_VMS).run(Refresh.INSTANCES);
      this.from(State.ENABLING_VMS).to(State.ENABLING_ADDRS).error(State.NOTREADY).on(Transition.ENABLING_ADDRS).run(Refresh.ADDRESSES);
      this.from(State.ENABLING_ADDRS).to(State.ENABLING_VMS_PASS_TWO).error(State.NOTREADY).on(Transition.ENABLING_VMS_PASS_TWO).run(Refresh.INSTANCES);
      this.from(State.ENABLING_VMS_PASS_TWO).to(State.ENABLING_ADDRS_PASS_TWO).error(State.NOTREADY).on(Transition.ENABLING_ADDRS_PASS_TWO).run(Refresh.ADDRESSES);
      this.from(State.ENABLING_ADDRS_PASS_TWO).to(State.ENABLED).error(State.NOTREADY).on(Transition.ENABLING_ADDRS_PASS_TWO).run(Refresh.ADDRESSES);
      this.from(State.ENABLED).to(State.ENABLED_SERVICE_CHECK).error(State.NOTREADY).on(Transition.ENABLED_SERVICES).run(Refresh.SERVICEREADY);
      this.from(State.ENABLED_SERVICE_CHECK).to(State.ENABLED_ADDRS).error(State.NOTREADY).on(Transition.ENABLED_ADDRS).run(Refresh.ADDRESSES);
      this.from(State.ENABLED_ADDRS).to(State.ENABLED_RSC).error(State.NOTREADY).on(Transition.ENABLED_RSC).run(Refresh.RESOURCES);
      this.from(State.ENABLED_RSC).to(State.ENABLED_NET).error(State.NOTREADY).on(Transition.ENABLED_NET).run(Refresh.NETWORKS);
      this.from(State.ENABLED_NET).to(State.ENABLED_VMS).error(State.NOTREADY).on(Transition.ENABLED_VMS).run(Refresh.INSTANCES);
      this.from(State.ENABLED_VMS).to(State.ENABLED).error(State.NOTREADY).on(Transition.ENABLED).run(noop);
    }
  }
.newAtomicMarkedState();
}

Fixed version (ground truth):
public Cluster(final ClusterConfiguration configuration){
  super();
  this.configuration=configuration;
  this.fullName=configuration.getFullName();
  this.state=new ClusterState(configuration.getName());
  this.nodeState=new ClusterNodeState(configuration.getName());
  this.nodeMap=new ConcurrentSkipListMap<String,NodeInfo>();
  this.stateMachine=new StateMachineBuilder<Cluster,State,Transition>(this,State.PENDING){
{
      final TransitionAction<Cluster> noop=Transitions.noop();
      this.in(Cluster.State.DISABLED).run(Cluster.ServiceStateDispatch.DISABLED).run(ErrorStateListeners.FLUSHPENDING);
      this.in(Cluster.State.ENABLED).run(Cluster.ServiceStateDispatch.ENABLED).run(ErrorStateListeners.FLUSHPENDING);
      this.from(State.BROKEN).to(State.PENDING).error(State.BROKEN).on(Transition.RESTART_BROKEN).run(noop);
      this.from(State.STOPPED).to(State.PENDING).error(State.PENDING).on(Transition.PRESTART).run(noop);
      this.from(State.PENDING).to(State.AUTHENTICATING).error(State.PENDING).on(Transition.AUTHENTICATE).run(LogRefresh.CERTS);
      this.from(State.AUTHENTICATING).to(State.STARTING).error(State.PENDING).on(Transition.START).run(noop);
      this.from(State.STARTING).to(State.STARTING_NOTREADY).error(State.PENDING).on(Transition.START_CHECK).run(Refresh.SERVICEREADY);
      this.from(State.STARTING_NOTREADY).to(State.NOTREADY).error(State.PENDING).on(Transition.STARTING_SERVICES).run(Refresh.SERVICEREADY);
      this.from(State.NOTREADY).to(State.DISABLED).error(State.NOTREADY).on(Transition.NOTREADYCHECK).run(Refresh.SERVICEREADY);
      this.from(State.DISABLED).to(State.DISABLED).error(State.NOTREADY).on(Transition.DISABLEDCHECK).run(Refresh.SERVICEREADY);
      this.from(State.DISABLED).to(State.ENABLING).error(State.DISABLED).on(Transition.ENABLE).run(Cluster.ServiceStateDispatch.ENABLED);
      this.from(State.DISABLED).to(State.STOPPED).error(State.PENDING).on(Transition.STOP).run(noop);
      this.from(State.ENABLED).to(State.DISABLED).error(State.NOTREADY).on(Transition.DISABLE).run(Cluster.ServiceStateDispatch.DISABLED);
      this.from(State.ENABLING).to(State.ENABLING_RESOURCES).error(State.NOTREADY).on(Transition.ENABLING_RESOURCES).run(Refresh.RESOURCES);
      this.from(State.ENABLING_RESOURCES).to(State.ENABLING_NET).error(State.NOTREADY).on(Transition.ENABLING_NET).run(Refresh.NETWORKS);
      this.from(State.ENABLING_NET).to(State.ENABLING_VMS).error(State.NOTREADY).on(Transition.ENABLING_VMS).run(Refresh.INSTANCES);
      this.from(State.ENABLING_VMS).to(State.ENABLING_ADDRS).error(State.NOTREADY).on(Transition.ENABLING_ADDRS).run(Refresh.ADDRESSES);
      this.from(State.ENABLING_ADDRS).to(State.ENABLING_VMS_PASS_TWO).error(State.NOTREADY).on(Transition.ENABLING_VMS_PASS_TWO).run(Refresh.INSTANCES);
      this.from(State.ENABLING_VMS_PASS_TWO).to(State.ENABLING_ADDRS_PASS_TWO).error(State.NOTREADY).on(Transition.ENABLING_ADDRS_PASS_TWO).run(Refresh.ADDRESSES);
      this.from(State.ENABLING_ADDRS_PASS_TWO).to(State.ENABLED).error(State.NOTREADY).on(Transition.ENABLING_ADDRS_PASS_TWO).run(Refresh.ADDRESSES);
      this.from(State.ENABLED).to(State.ENABLED_SERVICE_CHECK).error(State.NOTREADY).on(Transition.ENABLED_SERVICES).run(Refresh.SERVICEREADY);
      this.from(State.ENABLED_SERVICE_CHECK).to(State.ENABLED_ADDRS).error(State.NOTREADY).on(Transition.ENABLED_ADDRS).run(Refresh.ADDRESSES);
      this.from(State.ENABLED_ADDRS).to(State.ENABLED_RSC).error(State.NOTREADY).on(Transition.ENABLED_RSC).run(Refresh.RESOURCES);
      this.from(State.ENABLED_RSC).to(State.ENABLED_NET).error(State.NOTREADY).on(Transition.ENABLED_NET).run(Refresh.NETWORKS);
      this.from(State.ENABLED_NET).to(State.ENABLED_VMS).error(State.NOTREADY).on(Transition.ENABLED_VMS).run(Refresh.INSTANCES);
      this.from(State.ENABLED_VMS).to(State.ENABLED).error(State.NOTREADY).on(Transition.ENABLED).run(noop);
    }
  }
.newAtomicMarkedState();
}