/**@class java.lang.System
@extends java.lang.Object

 Provides access to system-related information and resources including
 standard input and output. Enables clients to dynamically load native
 libraries. All methods of this class are accessed in a static way and the
 class itself can not be instantiated.

 @see Runtime
*/
var System = {

/** Default input stream.
*/
in : "null",
/** Default output stream.
*/
out : "null",
/** Default error output stream.
*/
err : "null",
/**Sets the standard input stream to the given user defined input stream.
@param {Object {InputStream}} newIn
            the user defined input stream to set as the standard input
            stream.
*/
setIn : function(  ) {},

/**Sets the standard output stream to the given user defined output stream.
@param {Object {PrintStream}} newOut
            the user defined output stream to set as the standard output
            stream.
*/
setOut : function(  ) {},

/**Sets the standard error output stream to the given user defined output
 stream.
@param {Object {PrintStream}} newErr
            the user defined output stream to set as the standard error
            output stream.
*/
setErr : function(  ) {},

/**Copies {@code length} elements from the array {@code src},
 starting at offset {@code srcPos}, into the array {@code dst},
 starting at offset {@code dstPos}.

 <p>The source and destination arrays can be the same array,
 in which case copying is performed as if the source elements
 are first copied into a temporary array and then into the
 destination array.
@param {Object {Object}} src
            the source array to copy the content.
@param {Number} srcPos
            the starting index of the content in {@code src}.
@param {Object {Object}} dst
            the destination array to copy the data into.
@param {Number} dstPos
            the starting index for the copied content in {@code dst}.
@param {Number} length
            the number of elements to be copied.
*/
arraycopy : function(  ) {},

/**The char[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The byte[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The short[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The int[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The long[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The float[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The double[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**The boolean[] specialized version of arraycopy().
@hide internal use only
*/
arraycopy : function(  ) {},

/**Returns the current time in milliseconds since January 1, 1970 00:00:00.0 UTC.

 <p>This method always returns UTC times, regardless of the system's time zone.
 This is often called "Unix time" or "epoch time".
 Use a {@link java.text.DateFormat} instance to format this time for display to a human.

 <p>This method shouldn't be used for measuring timeouts or
 other elapsed time measurements, as changing the system time can affect
 the results. Use {@link #nanoTime} for that.
*/
currentTimeMillis : function(  ) {},

/**Returns the current timestamp of the most precise timer available on the
 local system, in nanoseconds. Equivalent to Linux's {@code CLOCK_MONOTONIC}.

 <p>This timestamp should only be used to measure a duration by comparing it
 against another timestamp on the same device.
 Values returned by this method do not have a defined correspondence to
 wall clock times; the zero value is typically whenever the device last booted.
 Use {@link #currentTimeMillis} if you want to know what time it is.
*/
nanoTime : function(  ) {},

/**Causes the VM to stop running and the program to exit with the given exit status.
 If {@link #runFinalizersOnExit}(boolean) has been previously invoked with a
 {@code true} argument, then all objects will be properly
 garbage-collected and finalized first.
*/
exit : function(  ) {},

/**Indicates to the VM that it would be a good time to run the
 garbage collector. Note that this is a hint only. There is no guarantee
 that the garbage collector will actually be run.
*/
gc : function(  ) {},

/**Returns the value of the environment variable with the given name, or null if no such
 variable exists.
*/
getenv : function(  ) {},

/**Returns an unmodifiable map of all environment variables to their values.
*/
getenv : function(  ) {},

/**Returns the inherited channel from the creator of the current virtual
 machine.
@return {Object {java.nio.channels.Channel}} the inherited {@link Channel} or {@code null} if none exists.
@throws IOException
             if an I/O error occurred.
@see SelectorProvider
@see SelectorProvider#inheritedChannel()
*/
inheritedChannel : function(  ) {},

/**Returns the system properties. Note that this is not a copy, so that
 changes made to the returned Properties object will be reflected in
 subsequent calls to getProperty and getProperties.
@return {Object {java.util.Properties}} the system properties.
*/
getProperties : function(  ) {},

/**Inits an unchangeable system property with the given value.

 This is called from native code when the environment needs to change under native
 bridge emulation.
@hide also visible for tests.
*/
setUnchangeableSystemProperty : function(  ) {},

/**Returns the value of a particular system property or {@code null} if no
 such property exists.

 <p>The following properties are always provided by the Dalvik VM:</p>
 <p><table BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
 <tr BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
     <td><b>Name</b></td>        <td><b>Meaning</b></td>                    <td><b>Example</b></td></tr>
 <tr><td>file.separator</td>     <td>{@link java.io.File#separator}</td>    <td>{@code /}</td></tr>

 <tr><td>java.class.path</td>    <td>System class path</td>                 <td>{@code .}</td></tr>
 <tr><td>java.class.version</td> <td>(Not useful on Android)</td>           <td>{@code 50.0}</td></tr>
 <tr><td>java.compiler</td>      <td>(Not useful on Android)</td>           <td>Empty</td></tr>
 <tr><td>java.ext.dirs</td>      <td>(Not useful on Android)</td>           <td>Empty</td></tr>
 <tr><td>java.home</td>          <td>Location of the VM on the file system</td> <td>{@code /system}</td></tr>
 <tr><td>java.io.tmpdir</td>     <td>See {@link java.io.File#createTempFile}</td> <td>{@code /sdcard}</td></tr>
 <tr><td>java.library.path</td>  <td>Search path for JNI libraries</td>     <td>{@code /vendor/lib:/system/lib}</td></tr>
 <tr><td>java.vendor</td>        <td>Human-readable VM vendor</td>          <td>{@code The Android Project}</td></tr>
 <tr><td>java.vendor.url</td>    <td>URL for VM vendor's web site</td>      <td>{@code http://www.android.com/}</td></tr>
 <tr><td>java.version</td>       <td>(Not useful on Android)</td>           <td>{@code 0}</td></tr>

 <tr><td>java.specification.version</td>    <td>VM libraries version</td>        <td>{@code 0.9}</td></tr>
 <tr><td>java.specification.vendor</td>     <td>VM libraries vendor</td>         <td>{@code The Android Project}</td></tr>
 <tr><td>java.specification.name</td>       <td>VM libraries name</td>           <td>{@code Dalvik Core Library}</td></tr>
 <tr><td>java.vm.version</td>               <td>VM implementation version</td>   <td>{@code 1.2.0}</td></tr>
 <tr><td>java.vm.vendor</td>                <td>VM implementation vendor</td>    <td>{@code The Android Project}</td></tr>
 <tr><td>java.vm.name</td>                  <td>VM implementation name</td>      <td>{@code Dalvik}</td></tr>
 <tr><td>java.vm.specification.version</td> <td>VM specification version</td>    <td>{@code 0.9}</td></tr>
 <tr><td>java.vm.specification.vendor</td>  <td>VM specification vendor</td>     <td>{@code The Android Project}</td></tr>
 <tr><td>java.vm.specification.name</td>    <td>VM specification name</td>       <td>{@code Dalvik Virtual Machine Specification}</td></tr>

 <tr><td>line.separator</td>     <td>The system line separator</td>         <td>{@code \n}</td></tr>

 <tr><td>os.arch</td>            <td>OS architecture</td>                   <td>{@code armv7l}</td></tr>
 <tr><td>os.name</td>            <td>OS (kernel) name</td>                  <td>{@code Linux}</td></tr>
 <tr><td>os.version</td>         <td>OS (kernel) version</td>               <td>{@code 2.6.32.9-g103d848}</td></tr>

 <tr><td>path.separator</td>     <td>See {@link java.io.File#pathSeparator}</td> <td>{@code :}</td></tr>

 <tr><td>user.dir</td>           <td>Base of non-absolute paths</td>        <td>{@code /}</td></tr>
 <tr><td>user.home</td>          <td>(Not useful on Android)</td>           <td>Empty</td></tr>
 <tr><td>user.name</td>          <td>(Not useful on Android)</td>           <td>Empty</td></tr>

 </table>

 <p> All of the above properties except for {@code user.home} and {@code java.io.tmpdir}
 <b>cannot be modified</b>. Any attempt to change them will be a no-op.
@param {String} propertyName
            the name of the system property to look up.
@return {String} the value of the specified system property or {@code null} if the
         property doesn't exist.
*/
getProperty : function(  ) {},

/**Returns the value of a particular system property. The {@code
 defaultValue} will be returned if no such property has been found.
*/
getProperty : function(  ) {},

/**Sets the value of a particular system property. Most system properties
 are read only and cannot be cleared or modified. See {@link #getProperty} for a
 list of such properties.
@return {String} the old value of the property or {@code null} if the property
         didn't exist.
*/
setProperty : function(  ) {},

/**Removes a specific system property. Most system properties
 are read only and cannot be cleared or modified. See {@link #getProperty} for a
 list of such properties.
@return {String} the property value or {@code null} if the property didn't exist.
@throws NullPointerException
             if the argument is {@code null}.
@throws IllegalArgumentException
             if the argument is empty.
*/
clearProperty : function(  ) {},

/**Returns the {@link java.io.Console} associated with this VM, or null.
 Not all VMs will have an associated console. A console is typically only
 available for programs run from the command line.
@since 1.6
*/
console : function(  ) {},

/**Returns null. Android does not use {@code SecurityManager}. This method
 is only provided for source compatibility.
@return {Object {java.lang.SecurityManager}} null
*/
getSecurityManager : function(  ) {},

/**Returns an integer hash code for the parameter. The hash code returned is
 the same one that would be returned by the method {@code
 java.lang.Object.hashCode()}, whether or not the object's class has
 overridden hashCode(). The hash code for {@code null} is {@code 0}.
@param {Object {Object}} anObject
            the object to calculate the hash code.
@return {Number} the hash code for the given object.
@see java.lang.Object#hashCode
*/
identityHashCode : function(  ) {},

/**Returns the system's line separator. On Android, this is {@code "\n"}. The value comes from
 the value of the {@code line.separator} system property.

 <p>On Android versions before Lollipop the {@code line.separator} system property can be
 modified but this method continues to return the original value. The system property cannot
 be modified on later versions of Android.
@since 1.7
*/
lineSeparator : function(  ) {},

/**See {@link java.lang.Runtime#load}.
*/
load : function(  ) {},

/**See {@link java.lang.Runtime#loadLibrary}.
*/
loadLibrary : function(  ) {},

/**
@hide internal use only
*/
logE : function(  ) {},

/**
@hide internal use only
*/
logE : function(  ) {},

/**
@hide internal use only
*/
logI : function(  ) {},

/**
@hide internal use only
*/
logI : function(  ) {},

/**
@hide internal use only
*/
logW : function(  ) {},

/**
@hide internal use only
*/
logW : function(  ) {},

/**Provides a hint to the VM that it would be useful to attempt
 to perform any outstanding object finalization.
*/
runFinalization : function(  ) {},

/**Ensures that, when the VM is about to exit, all objects are
 finalized. Note that all finalization which occurs when the system is
 exiting is performed after all running threads have been terminated.
@param {Boolean} flag
            the flag determines if finalization on exit is enabled.
@deprecated This method is unsafe.
*/
runFinalizersOnExit : function(  ) {},

/**Attempts to set all system properties. Copies all properties from
 {@code p} and discards system properties that are read only and cannot
 be modified. See {@link #getProperty} for a list of such properties.
*/
setProperties : function(  ) {},

/**Throws {@code SecurityException}.

 <p>Security managers do <i>not</i> provide a secure environment for
 executing untrusted code and are unsupported on Android. Untrusted code
 cannot be safely isolated within a single VM on Android, so this method
 <i>always</i> throws a {@code SecurityException}.
@param {Object {SecurityManager}} sm a security manager
@throws SecurityException always
*/
setSecurityManager : function(  ) {},

/**Returns the platform specific file name format for the shared library
 named by the argument. On Android, this would turn {@code "MyLibrary"} into
 {@code "libMyLibrary.so"}.
*/
mapLibraryName : function(  ) {},


};