class IgniteSpiMBeanAdapter implements IgniteSpiManagementMBean {
    /** */
    protected IgniteSpiAdapter spiAdapter;

    /**
     * Constructor
     *
     * @param spiAdapter Spi implementation.
     */
    public IgniteSpiMBeanAdapter(IgniteSpiAdapter spiAdapter) {
        this.spiAdapter = spiAdapter;
    }

    /** {@inheritDoc} */
    @Override public final String getStartTimestampFormatted() {
        return DateFormat.getDateTimeInstance().format(new Date(spiAdapter.getStartTstamp()));
    }

    /** {@inheritDoc} */
    @Override public final String getUpTimeFormatted() {
        return X.timeSpan2DHMSM(getUpTime());
    }

    /** {@inheritDoc} */
    @Override public final long getStartTimestamp() {
        return spiAdapter.getStartTstamp();
    }

    /** {@inheritDoc} */
    @Override public final long getUpTime() {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public UUID getLocalNodeId() {
        return spiAdapter.ignite.cluster().localNode().id();
    }

    /** {@inheritDoc} */
    @Override public final String getIgniteHome() {
        return spiAdapter.ignite.configuration().getIgniteHome();
    }

    /** {@inheritDoc} */
    @Override public String getName() {
        return spiAdapter.getName();
    }
}

        final long startTstamp = spiAdapter.getStartTstamp();

        return startTstamp == 0 ? 0 : U.currentTimeMillis() - startTstamp;
    
<no_super_class>