/*
 * Copyright (c) Robert Bosch GmbH. All rights reserved.
 */
package org.eclipse.blockchain.application;

import org.eclipse.equinox.app.IApplicationContext;
import org.eclipse.ui.internal.ide.application.IDEApplication;

/**
 * @author ADG5COB
 */
public class BlockchainApplication extends IDEApplication {

  /**
   * {@inheritDoc}
   */
  @Override
  public Object start(final IApplicationContext appContext) throws Exception {
    Object start = super.start(appContext);
    return start;
  }
}
