code: synchronized AllocatedSlice createSlice(final InstanceType reqType, final JobID jobID) {
  
  		// check whether we can accommodate the instance
  		if (remainingCapacity.getNumberOfComputeUnits() >= reqType.getNumberOfComputeUnits()
  			&& remainingCapacity.getNumberOfCores() >= reqType.getNumberOfCores()
  			&& remainingCapacity.getMemorySize() >= reqType.getMemorySize()
  			&& remainingCapacity.getDiskCapacity() >= reqType.getDiskCapacity()) {
  
  			// reduce available capacity by what has been requested
  			remainingCapacity = InstanceTypeFactory.construct(remainingCapacity.getIdentifier(), remainingCapacity
  				.getNumberOfComputeUnits()
  				- reqType.getNumberOfComputeUnits(), remainingCapacity.getNumberOfCores() - reqType.getNumberOfCores(),
  				remainingCapacity.getMemorySize() - reqType.getMemorySize(), remainingCapacity.getDiskCapacity()
  					- reqType.getDiskCapacity(), remainingCapacity.getPricePerHour());
  
  			final long allocationTime = System.currentTimeMillis();
  
  			final AllocatedSlice slice = new AllocatedSlice(this, reqType, jobID, allocationTime);
  			this.allocatedSlices.put(slice.getAllocationID(), slice);
  			return slice;
  		}
  
  		// we cannot accommodate the instance
  		return null;
  	}
docs: Tries to create a new slice on this instance.
  
  @param reqType
  the type describing the hardware characteristics of the slice
  @param jobID
  the ID of the job the new slice belongs to
  @return a new {@AllocatedSlice} object if a slice with the given hardware characteristics could
  still be accommodated on this instance or <code>null</code> if the instance's remaining resources
  were insufficient to host the desired slice