This looks pretty weird. The first ctor call will initialize the singleton variable, but the rest won't, and they won't fail either. Could it be a more classical pattern along the lines of:
`
Spark {
  Spark _singleton;

  Spark._internal() {
     ...
  }

  static Spark getInstance(developerMode) {
    if (_singleton == NULL) {
      _singleton = new Spark._internal(this.developerMode);
    } else {
      assert(_singleton.developerMode == developerMode);
   }
    return _singleton;
}
`

I realize that this is a moot exercise, because we can be 100% sure that new Spark() will not be called twice, but people learn from examples, so...